﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using System.Data;
using System.Data.SqlClient;

namespace DAO
{
    public class DoanhThuThangDAO
    {
        //1.Thêm trước Mã Tháng,Năm vào bảng DoanhThuThang
        public int InsertThang(DoanhThuThangDTO dtThang)
        {
            string sql = string.Format("insert into DoanhThuThang(MaDoanhThuThang,Thang,MaDoanhThuNam) values('{0}','{1}','{2}')", dtThang.MaDTThang, dtThang.Thang, dtThang.DoanhThuNam.Nam);
            SqlConnection conn = DataProvider.ConnectDB("QLVCB.mdf");
            SqlCommand cmd = new SqlCommand(sql, conn);
            int res = -1;
            res = cmd.ExecuteNonQuery();
            conn.Close();
            return res;
        }
        public int InsertNam(DoanhThuNamDTO dtNam)
        {
            string sql = string.Format("insert into DoanhThuNam(MaDoanhThuNam,Nam) values('{0}','{1}')", dtNam.MaDoanhThuNam, dtNam.Nam);
            SqlConnection conn = DataProvider.ConnectDB("QLVCB.mdf");
            SqlCommand cmd = new SqlCommand(sql, conn);
            int res = -1;
            res = cmd.ExecuteNonQuery();
            conn.Close();
            return res;
        }

        
        //2.Hàm kiểm tra Mã Tháng,Mã năm có trong bảng DoanhThuThang,DoanhThuNam chưa.
        public bool KTTrungThang(DoanhThuThangDTO dtThang)
        {
            string sql = "select * from DoanhThuThang where Thang='"+dtThang.Thang+"' and MaDoanhThuNam='"+dtThang.DoanhThuNam.Nam+"'";
            SqlConnection conn = DataProvider.ConnectDB("QLVCB.mdf");
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                return true;
            }
            conn.Close();
            return false;
        }
        public bool KTTrungNam(DoanhThuNamDTO dtNam)
        {
            string sql = "select * from DoanhThuNam where Nam='" + dtNam.Nam + "'";
            SqlConnection conn = DataProvider.ConnectDB("QLVCB.mdf");
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                return true;
            }
            conn.Close();
            return false;
        }

        //3.Hàm tính chi tiết doanh thu: Số vé và doanh thu của tháng.
        public List<CTDoanhThuThangDTO> TinhSoVe_DoanhThu(string Thang, string Nam)
        {
            string sql = "select ChuyenBay.MaChuyenBay, COUNT(VeChuyenBay.MaVe) AS SoVe, SUM(VeChuyenBay.GiaTien) AS DoanhThu,(ChuyenBay.SoLuongGheHang1 + ChuyenBay.SoLuongGheHang2) AS TongSoGhe";
            sql += " FROM VeChuyenBay INNER JOIN ChuyenBay ON VeChuyenBay.MaChuyenBay = ChuyenBay.MaChuyenBay ";
            sql += "WHERE (MONTH(ChuyenBay.NgayGio) = " + Thang + " and YEAR(ChuyenBay.NgayGio)= " + Nam + ")";
            sql += "GROUP BY ChuyenBay.MaChuyenBay,ChuyenBay.SoLuongGheHang1, ChuyenBay.SoLuongGheHang2";
            SqlConnection conn = DataProvider.ConnectDB("QLVCB.mdf");
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataReader reader = cmd.ExecuteReader();
            List<CTDoanhThuThangDTO> ds = new List<CTDoanhThuThangDTO>();
            while (reader.Read())
            {
                ChuyenBayDTO cb = new ChuyenBayDTO();
                CTDoanhThuThangDTO ctDT = new CTDoanhThuThangDTO();
                ctDT.SoVe = 0;
                ctDT.DoanhThu = 0;
                cb.MaCB = reader.GetString(0);
                ctDT.ChuyenBay = cb;
                ctDT.SoVe = reader.GetInt32(1);
                //ctDT.DoanhThu =reader.GetFloat(2);
                ctDT.DoanhThu = float.Parse(reader.GetDouble(2).ToString());
                int tongsoghe = reader.GetInt16(3);
                ctDT.TyLe = float.Parse((ctDT.SoVe / tongsoghe).ToString());
                ds.Add(ctDT);
            }
            conn.Close();
            return ds;

        }
       
        //Tính Doanh thu của tháng: Số chuyến bay trong tháng và doanh thu của từng tháng.
        public DoanhThuThangDTO TinhSoChuyenBay_TongDoanhThu(string MaDTThang)
        {
            string sql = "SELECT COUNT(CT_DoanhThuThang.MaChuyenBay) AS SoChuyenBay, SUM(CT_DoanhThuThang.DoanhThu) AS TongDoanhThuThang ";
            sql+=" FROM CT_DoanhThuThang INNER JOIN DoanhThuThang ON CT_DoanhThuThang.MaDoanhThuThang = DoanhThuThang.MaDoanhThuThang ";
            sql += " WHERE (DoanhThuThang.MaDoanhThuThang =" + MaDTThang + ")";
            SqlConnection conn = DataProvider.ConnectDB("QLVCB.mdf");
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataReader reader = cmd.ExecuteReader();
            DoanhThuThangDTO dt = new DoanhThuThangDTO();
            while (reader.Read())
            {
                dt.SoCB = reader.GetInt32(0);
                //string a=reader.GetDouble(1).ToString();
                //if (a == null)
                //    dt.TongDoanhThu = 0;
                //dt.TongDoanhThu = float.Parse(a);              
                //dt.TongDoanhThu =float.Parse( reader.GetInt32(1).ToString());
                dt.TongDoanhThu = float.Parse(reader.GetDouble(1).ToString());
    
            }
            conn.Close();
            return dt;

        }
        //Lưu xuống bảng CTDoanhThuThang
        public int InsertCTDoanhThu(CTDoanhThuThangDTO ctDT)
        {
            string sql = string.Format("insert into CT_DoanhThuThang(MaCTDoanhThuThang,MaDoanhThuThang,MaChuyenBay,SoVe,TyLe,DoanhThu) values('{0}','{1}','{2}','{3}','{4}','{5}')", ctDT.MaCTDoanhThu, ctDT.DoanhThuThang.MaDTThang, ctDT.ChuyenBay.MaCB,ctDT.SoVe,ctDT.TyLe, ctDT.DoanhThu);
            SqlConnection conn = DataProvider.ConnectDB("QLVCB.mdf");
            SqlCommand cmd = new SqlCommand(sql, conn);
            int res = -1;
            res = cmd.ExecuteNonQuery();
            conn.Close();
            return res;
        }
        // Lưu Xuống bảng DoanhThuThang
        public int LuuBaoCao(DoanhThuThangDTO dtThang)
        {
            string sql = "Update DoanhThuThang set SoChuyenBay='" + dtThang.SoCB + "', TongDoanhThuThang='" + dtThang.TongDoanhThu + "'";
            sql += " Where MaDoanhThuThang='" + dtThang.MaDTThang + "'";
            SqlConnection conn = DataProvider.ConnectDB("QLVCB.mdf");
            SqlCommand cmd = new SqlCommand(sql, conn);
            int res = -1;
            res = cmd.ExecuteNonQuery();
            conn.Close();
            return res;
        }
        public int XoaDoanhThuThangKhongBay(string MaDTThang)
        {
            string sql = "Delete from DoanhThuThang where MaDoanhThuThang='" + MaDTThang + "'";
            SqlConnection conn = DataProvider.ConnectDB("QLVCB.mdf");
            SqlCommand cmd = new SqlCommand(sql, conn);
            int res = -1;
            res = cmd.ExecuteNonQuery();
            conn.Close();
            return res;
        }
        //Cập nhật lại báo cáo
        //public int UpdateCTDoanhThu(CTDoanhThuThangDTO ctDT)
        //{
        //    string sql = "Update CT_DoanhThuThang ";
        //    sql += "Set MaDoanhThuThang='" + ctDT.MaDoanhThuThang + "',";
        //    sql += "MaChuyenBay='" + ctDT.MaChuyenBay + "',";
        //    sql += "SoVe='" + ctDT.SoVe + "',";
        //    sql += "TyLe='" + ctDT.TyLe + "',";
        //    sql += "DoanhThu='" + ctDT.DoanhThu + "' ";
        //    sql += "Where MaCTDoanhThuThang='" + ctDT.MaCTDoanhThu + "'";
        //    SqlConnection conn = DataProvider.ConnectDB("QLVCB.mdf");
        //    SqlCommand cmd = new SqlCommand(sql, conn);
        //    int res = -1;
        //    res = cmd.ExecuteNonQuery();
        //    conn.Close();
        //    return res;
        //}
        
    }
}
